#!/usr/bin/env groovy

timeout(time: 3, unit: 'HOURS') {
    node('py36') {
        wrap([$class: 'MesosSingleUseSlave']) {
            wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) {

                // Hardcoded default values are:
                // DC/OS OS: channel="testing/pull/1739", for open cluster
                // DC/OS EE: channel="testing/pull/1296", for strict or permissive clusters
                // The channel can be passed to the job in Jenkins (Build with Parameters) so that this job can be executed against any PR/cluster.
                properties([
                        // Run pipeline every 2h.
                        pipelineTriggers([cron('H H(0-23)/2 * * *')]),
                        parameters([
                                string(name: 'channel',
                                        defaultValue: 'testing/pull/1296',
                                        description: 'PR to start the cluster from e.g. testing/pull/1739'
                                )]
                        )
                ])

                stage("Run System Integration Test Pipeline") {
                    try {
                        checkout scm
                        withCredentials(
                                [[$class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'mesosphere-ci-marathon', accessKeyVariable: 'AWS_ACCESS_KEY_ID', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY'],
                                 file(credentialsId: '11fcc957-5156-4470-ae34-d433da88248a', variable: 'DOT_SHAKEDOWN'),
                                 usernamePassword(credentialsId: '323df884-742b-4099-b8b7-d764e5eb9674', passwordVariable: 'DCOS_PASSWORD', usernameVariable: 'DCOS_USERNAME'),
                                 string(credentialsId: 'ca159ad3-7323-4564-818c-46a8f03e1389', variable: 'DCOS_LICENSE'),
                                 string(credentialsId: '7bdd2775-2911-41ba-918f-59c8ae52326d', variable: 'DOCKER_HUB_USERNAME'),
                                 string(credentialsId: '42f2e3fb-3f4f-47b2-a128-10ac6d0f6825', variable: 'DOCKER_HUB_PASSWORD'),
                                 string(credentialsId: '66c40969-a46d-470e-b8a2-6f04f2b3f2d5', variable: 'DATADOG_API_KEY')
                                ]) {
                            sh """./ci/si_pipeline.sh $params.channel permissive"""
                        }
                    } finally {
                        junit allowEmptyResults: true, testResults: "**/shakedown.xml"
                        archive includes: "**/diagnostics.zip"
                        archive includes: "**/sandbox_*.tar.gz"
                        archive includes: "**/preflight*.log"
                        archive includes: "**/postflight*.log"
                        archive includes: "**/deploy*.log"
                    }
                }
            }
        }
    }
}